﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WoWDeckbuilder
{
    class Deck
    {
        // variable
        Hero leader;
        List<Quest> quests;
        List<Ability> abilities;
        List<Ally> allies;
        List<Equipment> equipment;
        List<Location> locations;

        // constructor
        public Deck()
        {
            quests = new List<Quest>();
            abilities = new List<Ability>();
            allies = new List<Ally>();
            equipment = new List<Equipment>();
            locations = new List<Location>();
            leader = new Hero(null);
        }

        // property
        public Hero hero
        {
            get { return leader; }
            set { leader = value; }
        }
        //
        // Deck edit methodes
        //

        /// <summary>
        /// Adds a quest.
        /// </summary>
        /// <param name="qs">Quest</param>
        public void AddQuest(Quest qs)
        {
            quests.Add(qs);
        }

        /// <summary>
        /// Adds an ability.
        /// </summary>
        /// <param name="ab">Ability</param>
        public void AddAbility(Ability ab)
        {
            abilities.Add(ab);
        }

        /// <summary>
        /// Adds an ally.
        /// </summary>
        /// <param name="al">Ally</param>
        public void AddAlly(Ally al)
        {
            allies.Add(al);
        }

        /// <summary>
        /// Adds an equipment.
        /// </summary>
        /// <param name="eq">Equipment</param>
        public void AddEquipment(Equipment eq)
        {
            equipment.Add(eq);
        }

        /// <summary>
        /// Adds a location.
        /// </summary>
        /// <param name="lc">Location</param>
        public void AddLocation(Location lc)
        {
            locations.Add(lc);
        }

        /// <summary>
        /// Removes a quest.
        /// </summary>
        /// <param name="qs">Quest</param>
        public void RemoveQuest(Quest qs)
        {
            quests.Remove(qs);
        }

        /// <summary>
        /// Removes an ability.
        /// </summary>
        /// <param name="ab">Ability</param>
        public void RemoveAbility(Ability ab)
        {
            abilities.Remove(ab);
        }

        /// <summary>
        /// Removes an ally.
        /// </summary>
        /// <param name="al">Ally</param>
        public void RemoveAlly(Ally al)
        {
            allies.Remove(al);
        }

        /// <summary>
        /// Removes an equipment.
        /// </summary>
        /// <param name="eq">Equipment</param>
        public void RemoveEquipment(Equipment eq)
        {
            equipment.Remove(eq);
        }

        /// <summary>
        /// Removes a location.
        /// </summary>
        /// <param name="lc">Location</param>
        public void RemoveLocation(Location lc)
        {
            locations.Remove(lc);
        }
    }
}
